#pragma once
#include <string.h>
#include <stdio.h>
#include <stdint.h>
#include <stdarg.h>
#include <sys/types.h> 

#define MAX_ERROR_STR 2048 //显示的错误信息最大数组长度
#define LOG_ERROR 0// error等级（写到标准输出和文件）
#define LOG_INFO 1// info等级（只写文件） 

extern int g_log;// 保存日志文件fd

bool Log_init(const char* name);// 初始化日志函数
void Log_Print(int level, int err, const char *fmt, va_list args);// 底层的写日志函数
void Log_Error(int err, const char *fmt, ...);// 往标准输出和日志文件写日志
void Log_Info(int err, const char *fmt, ...);// 仅写入日志文件
u_char *Log_errno(u_char *buf, u_char *last, int err);// 将错误码err和对应错误信息写入buf，返回写入后的指针
u_char *Log_GetTime(u_char* buffer, u_char* last);// 获取时间信息的函数
void safe_write(int fd, const void* buf, size_t count);// 安全写入函数，避免被信号中断